package com.yuanlai.quartz.service;

import java.util.List;

import org.quartz.SchedulerException;

import com.yuanlai.quartz.model.TtimedTask;
import com.yuanlai.quartz.model.domain.TaskDo;
import com.yuanlai.quartz.model.vo.TaskVo;
import com.yuanlai.quartz.utils.PageInfoUtil;

public interface ITaskService {
	
     /**分页查询
      * 根据条件查任务
      * @param vo
      * @return
      */
	 PageInfoUtil queryTask(int limit ,int offset,TtimedTask record);
	 /**
	  * 根据主键id查某个任务
	  * @param id
	  * @return
	  */
	 TaskVo queryOne(Long id);
	 /**
	  * 添加任务
	  * @param vo
	  * @return
	  */
	 int addTask(TtimedTask record);
	 /**
	  * 更新任务
	  * @param vo
	  * @return
	  */
	 int updateTask(TtimedTask record);
	 /**
	  * 删除任务
	  * @param id
	  * @return
	 * @throws SchedulerException 
	  */
	 int deleteTask(Long id) throws SchedulerException;
	 
	 /**
	  * 系统启动时加载数据库中的任务，初始化
	  * @param list
	  */
	 void initWhenStart(List<TaskVo> list);
	 /**
	  * 查所有的任务
	  * @return
	  */
	 List<TaskVo> selectAllTask();
	 /**
	  * 立即执行
	  * @param id
	  * @throws SchedulerException
	 * @throws ClassNotFoundException 
	  */
	 public void runTaskNow(Long id) throws SchedulerException;
	 /**
	  * 关闭任务状态
	  * @param id
	 * @throws SchedulerException 
	  */
	 public void closeTask(Long id) throws SchedulerException;
	 /**
	  * 开启任务状态
	  * @param id
	  */
	 public void openTask(Long id);
	 /**
	  * 暂停任务
	  * @param id
	 * @throws SchedulerException 
	  */
	 public void pauseTask(Long id) throws SchedulerException;
	 /**
	  * 恢复任务
	  * @param id
	 * @throws SchedulerException 
	  */
	 public void resumeTask(Long id) throws SchedulerException;
	
	 public void updateTaskCron(TaskVo taskVo) throws SchedulerException;

}
